﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.Practices.EnterpriseLibrary.Validation;
using Microsoft.Practices.EnterpriseLibrary.Validation.Validators;

namespace Domain
{
    [HasSelfValidation]
    public class Asociacion
    {
        public DateTime FechaAsociacion { get; set; }
        public DateTime? FechaBajaAsociacion { get; set; }
        public long? IdPublicidad { get; set; }
        public long? IdEmpresa { get; set; }

        public Asociacion() { }
        public Asociacion(DateTime _FechaAsociacion, DateTime? _FechaBajaAsociacion, long? _IdPublicidad, long? _IdEmpresa)
        {
            this.FechaAsociacion = _FechaAsociacion;
            this.FechaBajaAsociacion = _FechaBajaAsociacion;
            this.IdPublicidad = _IdPublicidad;
            this.IdEmpresa = _IdEmpresa;
        }

        [SelfValidation]
        public void Check_Fechas(ValidationResults results)
        {
            if (FechaBajaAsociacion.HasValue && FechaBajaAsociacion.Value < FechaBajaAsociacion)
            {
                results.AddResult(new ValidationResult("La fecha de desasociación no puede ser inferior a la fecha de asociación", this, string.Empty, string.Empty, null));
            }
        }

        [SelfValidation]
        public void Check_Asociacion(ValidationResults results)
        {
            if (IdPublicidad.HasValue && IdEmpresa.HasValue)
            {
                results.AddResult(new ValidationResult("No es posible asociar a una empresa y a una publicidad a la vez", this, string.Empty, string.Empty, null));
            }

            if (!IdPublicidad.HasValue && !IdEmpresa.HasValue)
            {
                results.AddResult(new ValidationResult("Debe asociar a una empresa o a una publicidad", this, string.Empty, string.Empty, null));
            }
        }

    }

}
